Skip to content

feat(appkit): Agent Skills v1 — SKILL.md progressive disclosure + demo (#532) - #544

Merged
MarioCadenas merged 6 commits into
mainfrom
split/532/fixtures-docs
Aug 31, 2026
Merged

feat(appkit): Agent Skills v1 — SKILL.md progressive disclosure + demo (#532)#544
MarioCadenas merged 6 commits into
mainfrom
split/532/fixtures-docs

Conversation

@MarioCadenas

Copy link
Copy Markdown
Collaborator

Summary

Playground/template half of #532 (Agent Skills v1), split 2 of 2. Stacked on #543.

Demo skills exercising every source and case:

  • Global + opt-in: skills/bullet-brief (helper opts in → multi-entry menu on a code agent)
  • Per-agent source: query/skills/routing-brief (+ bundled reference.md, allowed-tools)
  • Collision: per-agent query/skills/haiku vs global haikuagent:haiku / bundle:haiku
  • Template: tracer-bullets skill + planner opt-in
  • /agent page picker gains query so its skills surface in the input

Merge order

Depends on #543 (2/2). Base is split/532/sdk-feature; GitHub auto-retargets this to main once #543 merges.

14 files: apps/dev-playground/* + template/*.

SDK half of #532 (split 1/2). Skills engine (parse/load/resolve/render/read),
agent-definition skills: wiring, agents-plugin integration (load_skill +
read_skill_file tools, catalog resolution, clientConfig), the appkit-ui
useAgentChat /skill surface, and docs. Playground/template fixtures follow in 2/2.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
template/appkit.plugins.json is generated from the plugin manifests; it must
travel with the agents manifest.json change (skills volume resource) or CI's
sync:template check fails. Was mis-bucketed into the 2/2 fixtures PR.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Review follow-ups on #543:
- parallelize UC-volume skill reads (network-bound) via Promise.all; per-skill
  failures still skip individually and sorted order is preserved
- extract the useAgentChat slash-command parse into a named resolveSkill helper (appkit-ui)
- delete 18 stale biome-ignore comments — post-oxlint migration, and no-explicit-any
  is off in .oxlintrc.json, so they suppressed nothing

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Playground/template half of #532 (split 2/2), stacked on the SDK PR (1/2).
Demo skills exercising every source/case: global bullet-brief (+ helper opt-in),
per-agent query/skills/routing-brief, the agent:haiku/bundle:haiku collision, and
the template tracer-bullets skill. Auto-retargets to main once 1/2 merges.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
@MarioCadenas
MarioCadenas force-pushed the split/532/fixtures-docs branch from 14b6f9a to 7f79209 Compare August 21, 2026 13:55
react/exhaustive-deps is off in .oxlintrc.json and oxlint doesn't parse
biome directives, so these two suppressions were inert post-migration.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
@MarioCadenas

Copy link
Copy Markdown
Collaborator Author

Collapsed into #547 (the playground + template skills fixtures are now included there). Closing to keep the skills work as one squash-mergeable PR during my vacation. Commits preserved in #547.

@MarioCadenas MarioCadenas reopened this Aug 21, 2026
@MarioCadenas MarioCadenas changed the title test(playground): Agent Skills demo — playground + template fixtures (2/2 of #532) feat(appkit): Agent Skills v1 — SKILL.md progressive disclosure + demo (#532) Aug 21, 2026
@MarioCadenas
MarioCadenas changed the base branch from split/532/sdk-feature to main August 21, 2026 17:11
Comment thread packages/appkit-ui/src/react/hooks/use-agent-chat.ts
The leading-/token sugar in useAgentChat stripped any /word off the
message and sent it as a skill, so ordinary messages like '/tmp is full'
or '/usr/bin/python needs upgrading' were mangled into a bogus skill with
the first word cut out.

Parse the leading token as a skill only when it matches a name in the
agent's skill catalog; otherwise send the message verbatim. useAgentChat
gains an optional 'skills' option (the known names); the template passes
its catalog through, and the playground route applies the same guard to
its inline parser.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
@MarioCadenas
MarioCadenas enabled auto-merge (squash) August 31, 2026 09:27
@github-actions

Copy link
Copy Markdown
Contributor

📦 Bundle size report

Compared against bundle-size-baseline.json (main).

@databricks/appkit

npm tarball (packed): 1007 KB (+23 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 1.0 MB (+24 KB) 360 KB (+8.9 KB)
Type declarations 385 KB (+6.4 KB) 136 KB (+2.5 KB)
Source maps 2.0 MB (+43 KB) 676 KB (+15 KB)
Other 11 KB 3.7 KB
Total 3.4 MB (+73 KB) 1.1 MB (+26 KB)
Per-entry composition (own code — deps external (as shipped))
Entry Initial (gz) Lazy (gz) Total (gz) node_modules (min) Own code (min)
. 95 KB 2.5 KB 97 KB external 311 KB
./beta 70 KB (+5.6 KB) 457 B 71 KB (+5.6 KB) external 212 KB (+16 KB)
./testing 17 KB 0 B 17 KB external 50 KB
./tsdown 520 B 0 B 520 B external 813 B
./type-generator 22 KB 0 B 22 KB external 65 KB

Chunks:

Entry Chunk Load Size (gz)
. index.js initial 91 KB
. utils.js initial 4.0 KB
. remote-tunnel-manager.js lazy 2.5 KB
./beta beta.js initial 54 KB
./beta stream-manager.js initial 5.8 KB
./beta wide-event-emitter.js initial 3.2 KB
./beta databricks.js initial 3.0 KB
./beta configuration.js initial 2.1 KB
./beta service-context.js initial 1.3 KB
./beta client.js initial 434 B
./beta client-options.js initial 220 B
./beta supervisor-api.js lazy 192 B
./beta databricks.js lazy 142 B
./beta index.js lazy 123 B
./testing index.js initial 17 KB
./tsdown index.js initial 520 B
./type-generator index.js initial 22 KB

@databricks/appkit-ui

npm tarball (packed): 350 KB (+1.8 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 395 KB (+897 B) 132 KB (+410 B)
Type declarations 229 KB (+917 B) 84 KB (+416 B)
Source maps 766 KB (+2.7 KB) 253 KB (+1.0 KB)
CSS 16 KB 3.2 KB
Total 1.4 MB (+4.5 KB) 473 KB (+1.9 KB)
Per-entry composition (consumer bundle — deps bundled, peerDeps external)
Entry Initial (gz) Lazy (gz) Total (gz) node_modules (min) Own code (min)
./js 5.3 KB 49 KB 55 KB 208 KB 14 KB
./js/beta 20 B 0 B 20 B 0 B 0 B
./react 432 KB (+214 B) 49 KB 481 KB (+214 B) 1.3 MB 177 KB (+323 B)
./react/beta 1.0 KB 0 B 1.0 KB 0 B 1.9 KB

Chunks:

Entry Chunk Load Size (gz)
./js index.js initial 5.2 KB
./js chunk initial 120 B
./js apache-arrow lazy 49 KB
./js/beta beta.js initial 20 B
./react index.js initial 430 KB
./react tslib initial 2.1 KB
./react apache-arrow lazy 49 KB
./react/beta beta.js initial 1.0 KB

@github-actions

Copy link
Copy Markdown
Contributor

🤖 AppKit PR bot

🔬 Run evals

Start an eval for this PR from the evals-monitor app: Go to Evals Monitor →

📦 Try this PR's app template

Scaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh auth login — and the Databricks CLI):

gh run download 33377604341 -R databricks/appkit -n appkit-template-0.66.1-pr.25f9c2c-split-532-fixtures-docs-544 -D appkit-pr-544 \
  && unzip -o "appkit-pr-544/appkit-template-0.66.1-pr.25f9c2c-split-532-fixtures-docs-544.zip" -d "appkit-pr-544" \
  && databricks apps init --template "appkit-pr-544"

The template pins @databricks/appkit and @databricks/appkit-ui to tarballs built from this branch, so the scaffolded app runs against this PR's code.

@MarioCadenas
MarioCadenas disabled auto-merge August 31, 2026 09:35
@MarioCadenas
MarioCadenas merged commit 019a80a into main Aug 31, 2026
10 checks passed
@MarioCadenas
MarioCadenas deleted the split/532/fixtures-docs branch August 31, 2026 09:35
MarioCadenas added a commit that referenced this pull request Aug 31, 2026
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants